package com.happyghost.juc.synchronizeddemo;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class SynchroniedDemo3 {

    public void method1() {
        synchronized (SynchroniedDemo3.class) {
            for (int i = 0; i < 10; i++) {
                System.out.print(" " + i);
            }
        }
    }


    /**
     *  同步一个静态方法:作用于整个类。
     */
    public synchronized static void method() {
        // ...
    }


    /**
     *  同步一个方法 : 它和同步代码块一样，作用于同一个对象。
     */
    public synchronized void func () {
        // ...
    }



    /**
     * 作用于整个类，也就是说两个线程调用同一个类的不同对象上的这种同步语句，也会进行同步。
     * @param args
     */
    public static void main(String[] args) {
        SynchroniedDemo3 demo1 = new SynchroniedDemo3();
        SynchroniedDemo3 demo2 = new SynchroniedDemo3();
        ExecutorService executorService = Executors.newCachedThreadPool();

        executorService.execute(() -> demo1.method1());
        executorService.execute(() -> demo2.method1());

        //result
        //0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
    }
}
